import Vue from 'vue'
import Vuex from 'vuex'
// 引入修改用户资料接口
import { auInfo } from '@/api/my.js'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    userInfo: '', // 用户信息
    isLogin: false // 是否登陆
  },
  mutations: {
    // 设置用户信息
    setUserInfo (state, value) {
      state.userInfo = value
    },
    // 设置isLogin
    setIsLogin (state, value) {
      state.isLogin = value
    }
  },
  // 异步修改资料
  actions: {
    getUserIndo (store) {
      auInfo().then(res => {
        store.commit('setUserInfo', res.data.data)
        store.commit('setIsLogin', true)
      })
    }
  },
  // 使用场景：依赖state 一个或者多个值产生的新值
  getters: {
    // vuex中定义一个方法 不能直接传参 所以利用函数传参
    gettersTate (state) {
      if (!state.isLogin) {
        return 0
      }
      return (fn, id) => {
        return state.userInfo[fn] && state.userInfo[fn].includes(+id)
      }
    },
    // 拿到刷题总数
    getQuestion (state) {
      if (!state.isLogin) {
        return 0
      }
      return (
        state.userInfo.correctQuestions.length +
        state.userInfo.errorQuestions.length
      )
    },
    // 答题数与总数的占比
    getRate (state) {
      return total => {
        return (
          ((state.userInfo.correctQuestions.length +
            state.userInfo.errorQuestions.length) /
            total) *
          100
        )
      }
    }
  },
  modules: {}
})
